package cn.edu.seig.springks.controller;

import cn.edu.seig.springks.pojo.cart;
import cn.edu.seig.springks.pojo.order;
import cn.edu.seig.springks.service.cartService;
import lombok.Data;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 购物车控制器类，处理与购物车相关的API请求
 */
@RestController
@RequestMapping("/api/cart")
public class cartController {

    /**
     * 自动注入购物车服务类对象
     */
    @Autowired
    private cartService cartService;

    /**
     * 获取用户购物车列表
     *
     * @param u_id 用户ID
     * @return 包含购物车信息的响应实体
     */
    @GetMapping("/list/{u_id}")
    public ResponseEntity<List<cart>> getCartList(@PathVariable int u_id) {
        List<cart> cartList = cartService.getCartList(u_id);
        return ResponseEntity.ok(cartList);
    }

    /**
     * 删除购物车中的指定商品
     *
     * @param c_id 购物车商品ID
     * @param u_id 用户ID
     * @return 包含删除结果的响应实体
     */
    @PostMapping("/delete/{c_id}/{u_id}")
    public ResponseEntity<Integer> deleteCart(@PathVariable int c_id,@PathVariable int u_id) {
        int result = cartService.deleteCart(new cart(c_id,u_id));
        return ResponseEntity.ok(result);
    }

    /**
     * 创建订单并结算购物车中的商品
     *
     * @param request 包含订单信息、商品索引和用户ID的请求体
     * @return 包含创建订单结果的响应实体
     */
    @PostMapping("/settlement")
    public ResponseEntity<Integer> createOrders(@RequestBody CreateOrderRequest request) {
        System.out.println(request);
        int result = cartService.InsertOrders(request.getOrders(),request.getIndex(),request.getU_id());
        return ResponseEntity.ok(result );
    }

    /**
     * 请求体类，用于创建订单请求
     */
    @Data
    public static class CreateOrderRequest {
        private List<order> orders;
        private List<cart> index;
        private int u_id;
    }
}
